R-Vision
Интеграция с R-Vision TIP
Данное руководство описывает быструю настройку интеграции Solar TI Feeds Agent с R-Vision Threat Intelligence Platform (TIP) для автоматической загрузки индикаторов компрометации (IoC).
Предварительные требования
- Установленный и настроенный Solar TI Feeds Agent
- Действительный JWT-токен для доступа к Solar TI Feeds API
- Учётные данные для доступа к R-Vision TIP API (x-api-key)
- Идентификатор интеграции (Integration ID) в R-Vision TIP
Конфигурация интеграции
Интеграция автоматизирует выгрузку индикаторов из Solar TI Feeds в R-Vision TIP. Для подключения к системе используется аутентификация типа HeaderAuth с передачей API-ключа в заголовке x-api-key.
Основные компоненты интеграции:
| Компонент | Назначение |
|---|---|
FeedsAPIGenerator | Загрузка данных из Solar TI Feeds API |
FeedsDBSink | Сохранение данных в локальную SQLite-базу |
FeedsDBGenerator | Чтение данных из базы для обработки |
FeedsFailedDBGenerator | Повторная обработка ошибочных записей |
RVisionSink | Отправка данных в R-Vision TIP через API |
Переменные окружения
Для работы интеграции необходимо определить следующие переменные окружения в файле docker-compose.yml:
| Переменная | Назначение | Значение по умолчанию |
|---|---|---|
TIC_AGENT_RVISION_ADDRESS | URL-адрес сервера R-Vision TIP API (например, https://tip.example.com:4002) | - |
TIC_AGENT_RVISION_TOKEN | API-ключ для аутентификации в R-Vision TIP (заголовок x-api-key) | - |
TIC_AGENT_RVISION_INTEGRATION_ID | Идентификатор интеграции в R-Vision TIP | - |
TIC_AGENT_RVISION_PROXY | Строка подключения к прокси-серверу для R-Vision (например, socks5://user:password@proxy.domain:port) | - |
Структура pipeline для R-Vision
В актуальной версии конфигурации используется один комплексный pipeline, а не отдельные pipeline для каждого фида. Pipeline состоит из двух частей:
Pipeline 1: feeds-api (загрузка данных)
| Компонент | Параметры | Описание |
|---|---|---|
FeedsAPIGenerator | name = "feeds-api-generator" | Запрос данных из Solar TI Feeds API с настраиваемыми интервалом и размером пакета. Запрашиваются все поля (fields = "all"). |
server = templates.TICApiCfg (адрес и токен из TIC_AGENT_API_URL / TIC_AGENT_API_TOKEN) | ||
schedule = (read?("env:TIC_AGENT_API_POOL_INTERVAL") ?? 3600).toInt().s | ||
filter.pagination.limit = (read?("env:TIC_AGENT_API_BATCH_SIZE") ?? 1000).toInt() | ||
FeedsDBSink | name = "feeds-db-sink"inputs = ["feeds-api-generator"] | Сохранение всех полученных данных в SQLite-базу для последующей обработки. |
Pipeline 2: r-vision (обработка и выгрузка)
| Компонент | Параметры | Описание |
|---|---|---|
FeedsDBGenerator | name = "r-vision-feeds-db-generator" | Чтение индикаторов из БД с настраиваемыми интервалом, задержкой и размером пакета. |
schedule = (read?("env:TIC_AGENT_DB_POOL_INTERVAL") ?? 600).toInt().s | ||
delay = (read?("env:TIC_AGENT_DB_START_DELAY") ?? 60).toInt().s | ||
batchSize = (read?("env:TIC_AGENT_DB_BATCH_SIZE") ?? 100).toInt() | ||
batchDelay = (read?("env:TIC_AGENT_DB_BATCH_DELAY") ?? 100).toInt().ms | ||
FeedsFailedDBGenerator | name = "r-vision-feeds-db-failed-generator" | Повторная обработка индикаторов, отправка которых ранее завершилась ошибкой. Привязан к основному генератору через feedGenName. Параметры schedule и delay не задаются – используются значения по умолчанию, заданные в компоненте (или наследуются от основного генератора). |
feedGenName = "r-vision-feeds-db-generator" | ||
RVisionSink | name = "r-vision-sink" | Отправка подготовленных индикаторов в R‑Vision TIP. Аутентификация – через заголовок x-api-key. Поддерживается прокси. |
inputs = ["r-vision-feeds-db-generator", "r-vision-feeds-db-failed-generator"] | ||
server = new agent.ServerCfg { | ||
integrationId = read("env:TIC_AGENT_RVISION_INTEGRATION_ID") |
Условие фильтрации (Filter)
Для настройки фильтрации необходимо обратиться в службу технической поддержки.
Справочник параметров для R-Vision TIP
Параметры ServerCfg (подключение к R-Vision TIP)
| Параметр | Тип данных | Значение по умолчанию | Обязательность | Описание | Пример |
|---|---|---|---|---|---|
credentials | HeaderAuth | new NoAuth {} | Да | Данные для аутентификации | credentials = new agent.HeaderAuth{name = "x-api-key" value = read("env:TIC_AGENT_RVISION_TOKEN")} |
address | Address | Да | URL-адрес сервера R-Vision TIP API | address = read("env:TIC_AGENT_RVISION_ADDRESS") |
Параметры RVisionSink
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
server | ServerCfg | Да | Конфигурация подключения к серверу R-Vision TIP |
integrationId | String | Да | Идентификатор интеграции, полученный в R-Vision TIP |
Полный код конфигурационного файла для интеграции с R-Vision TIP
📄 Нажмите, чтобы показать/скрыть config-rvision.pkl
amends "package://pkg.pkl-lang.org/github.com/pipelane/pipelaner/pipelaner@1.3.1#/Pipelaner.pkl"
import "package://pkg.pkl-lang.org/github.com/pipelane/pipelaner/pipelaner@1.3.1#/source/Components.pkl"
import "../pkl/internal/agent.pkl"
import "../pkl/internal/templates.pkl"
pipelines {
new Components.Pipeline {
name = "feeds-api"
inputs {
new agent.FeedsAPIGenerator {
name = "feeds-api-generator"
schedule = templates.scheduleCron10MinCfg
server = templates.serverApiCfg
}
}
sinks {
new agent.FeedsDBSink {
name = "feeds-db-sink"
inputs {
"feeds-api-generator"
}
}
}
}
new Components.Pipeline {
name = "r-vision"
inputs {
new agent.FeedsDBGenerator {
name = "feeds-db-generator"
schedule = templates.scheduleCron10MinCfg
delay = 1.min
}
new agent.FeedsFailedDBGenerator {
name = "feeds-db-failed-generator"
feedGenName = "feeds-db-generator"
schedule = templates.scheduleCron30MinCfg
delay = 5.min
}
}
sinks {
new agent.RVisionSink {
name = "feeds-open-cti-sink"
inputs {
"feeds-db-generator"
"feeds-db-failed-generator"
}
server = new agent.ServerCfg{
address = read("env:TIC_AGENT_RVISION_ADDRESS")
credentials = new agent.HeaderAuth{
name = "x-api-key"
value = read("env:TIC_AGENT_RVISION_TOKEN")
}
}
integrationId = read("env:TIC_AGENT_RVISION_INTEGRATION_ID")
}
}
}
}
settings = templates.baseSettings
Мониторинг результатов работы интеграции
После запуска агента убедитесь в корректности работы интеграции:
| Проверка | Действие |
|---|---|
| Проверка логов агента | Просмотрите логи в директории ./workdir/logs на наличие ошибок или предупреждений |
| Верификация в R-Vision TIP | В интерфейсе R-Vision TIP убедитесь, что индикаторы загружаются с указанным integrationId |
| Проверка фильтрации | Убедитесь, что загружаются только индикаторы, соответствующие условиям фильтра |
Примечание: Логи агента также можно просмотреть в реальном времени с помощью команды
docker logs {CONTAINER_NAME}.